home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / s390 / include / asm / chpid.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.0 KB  |  57 lines

  1. /*
  2.  *  drivers/s390/cio/chpid.h
  3.  *
  4.  *    Copyright IBM Corp. 2007
  5.  *    Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
  6.  */
  7.  
  8. #ifndef _ASM_S390_CHPID_H
  9. #define _ASM_S390_CHPID_H _ASM_S390_CHPID_H
  10.  
  11. #include <linux/string.h>
  12. #include <asm/types.h>
  13.  
  14. #define __MAX_CHPID 255
  15.  
  16. struct chp_id {
  17.     u8 reserved1;
  18.     u8 cssid;
  19.     u8 reserved2;
  20.     u8 id;
  21. } __attribute__((packed));
  22.  
  23. #ifdef __KERNEL__
  24. #include <asm/cio.h>
  25.  
  26. static inline void chp_id_init(struct chp_id *chpid)
  27. {
  28.     memset(chpid, 0, sizeof(struct chp_id));
  29. }
  30.  
  31. static inline int chp_id_is_equal(struct chp_id *a, struct chp_id *b)
  32. {
  33.     return (a->id == b->id) && (a->cssid == b->cssid);
  34. }
  35.  
  36. static inline void chp_id_next(struct chp_id *chpid)
  37. {
  38.     if (chpid->id < __MAX_CHPID)
  39.         chpid->id++;
  40.     else {
  41.         chpid->id = 0;
  42.         chpid->cssid++;
  43.     }
  44. }
  45.  
  46. static inline int chp_id_is_valid(struct chp_id *chpid)
  47. {
  48.     return (chpid->cssid <= __MAX_CSSID);
  49. }
  50.  
  51.  
  52. #define chp_id_for_each(c) \
  53.     for (chp_id_init(c); chp_id_is_valid(c); chp_id_next(c))
  54. #endif /* __KERNEL */
  55.  
  56. #endif /* _ASM_S390_CHPID_H */
  57.